{module, no_exception_in_catch}.  %% version = 0

{exports, [{foo,1},{module_info,0},{module_info,1},{nested_of_1,4}]}.

{attributes, []}.

{labels, 22}.


{function, nested_of_1, 4, 2}.
  {label,1}.
    {func_info,{atom,no_exception_in_catch},{atom,nested_of_1},4}.
  {label,2}.
    {test,is_tuple,{f,1},[{x,0}]}.
    {test,test_arity,{f,1},[{x,0},3]}.
    {allocate,15,4}.
    {init_yregs,{list,[{y,0},{y,1},{y,2},{y,3},{y,4},{y,5},{y,6},{y,7},{y,8}]}}.
    {get_tuple_element,{x,0},0,{y,9}}.
    {get_tuple_element,{x,0},1,{y,10}}.
    {get_tuple_element,{x,0},2,{y,11}}.
    {move,{x,3},{y,14}}.
    {move,{x,2},{y,13}}.
    {move,{x,1},{y,12}}.
    {move,{atom,nested3},{x,0}}.
    {call_ext,1,{extfunc,erlang,erase,1}}.
    {move,{atom,nested4},{x,0}}.
    {call_ext,1,{extfunc,erlang,erase,1}}.
    {move,{atom,nested},{x,0}}.
    {call_ext,1,{extfunc,erlang,erase,1}}.
    {bif,self,{f,0},[],{x,0}}.
    {'try',{y,8},{f,13}}.
    {'try',{y,7},{f,11}}.
    {'try',{y,6},{f,9}}.
    {'try',{y,5},{f,7}}.
%% Because the following instructions can't possible throw an exception,
%% label 7 used to get no state. Now the try_end itself will save the state.
    {move,{x,0},{y,4}}.
    {bif,self,{f,0},[],{x,0}}.
    {'%live',1}.
    {try_end,{y,5}}.
    {test,is_eq_exact,{f,15},[{x,0},{y,4}]}.
    {'try',{y,5},{f,6}}.
    {'try',{y,3},{f,3}}.
    {move,{y,9},{x,0}}.
    {call,1,{f,17}}.
    {try_end,{y,3}}.
    {test,is_eq_exact,{f,15},[{x,0},{y,11}]}.
    {move,{y,12},{x,0}}.
    {call,1,{f,17}}.
    {test_heap,3,1}.
    {put_tuple2,{x,1},{list,[{atom,value1},{x,0}]}}.
    {move,{x,1},{x,0}}.
    {jump,{f,5}}.
  {label,3}.
    {try_case,{y,3}}.
    {move,{x,1},{y,1}}.
    {move,{x,0},{y,2}}.
    {move,{x,2},{y,3}}.
    {bif,'=:=',{f,4},[{x,0},{y,10}],{x,3}}.
    {move,{x,3},{y,0}}.
    {bif,'=:=',{f,4},[{x,1},{y,11}],{x,4}}.
    {bif,'and',{f,4},[{x,3},{x,4}],{x,3}}.
    {test,is_eq_exact,{f,4},[{x,3},{atom,true}]}.
    {init_yregs,{list,[{y,0},{y,1},{y,2},{y,3}]}}.
    {move,{y,12},{x,0}}.
    {call,1,{f,17}}.
    {test_heap,3,1}.
    {put_tuple2,{x,1},{list,[{atom,caught1},{x,0}]}}.
    {move,{x,1},{x,0}}.
    {jump,{f,5}}.
  {label,4}.
    {bif,raise,{f,0},[{x,2},{x,1}],{x,0}}.
    {'%live',1}.
  {label,5}.
    {try_end,{y,5}}.
    {move,{x,0},{y,5}}.
    {move,{y,13},{x,0}}.
    {call,1,{f,17}}.
    {move,{x,0},{x,1}}.
    {move,{atom,nested3},{x,0}}.
    {call_ext,2,{extfunc,erlang,put,2}}.
    {move,{y,5},{x,0}}.
    {jump,{f,8}}.
  {label,6}.
    {try_case,{y,5}}.
    {move,{x,2},{y,5}}.
    {move,{x,1},{y,3}}.
    {move,{y,13},{x,0}}.
    {call,1,{f,17}}.
    {move,{x,0},{x,1}}.
    {move,{atom,nested3},{x,0}}.
    {call_ext,2,{extfunc,erlang,put,2}}.
    {bif,raise,{f,0},[{y,5},{y,3}],{x,0}}.
    {'%live',1}.
    {jump,{f,8}}.
  {label,7}.
%% The instructions here used to be not checked.
    {move,{x,3},{x,0}}.
    {try_case,{y,5}}.
    {bif,raise,{f,0},[{x,2},{x,1}],{x,0}}.
    {'%live',1}.
  {label,8}.
    {try_end,{y,6}}.
    {move,{x,0},{y,13}}.
    {init_yregs,{list,[{y,3},{y,4},{y,5},{y,9},{y,10},{y,11},{y,12}]}}.
    {move,{y,14},{x,0}}.
    {call,1,{f,17}}.
    {move,{x,0},{x,1}}.
    {move,{atom,nested4},{x,0}}.
    {call_ext,2,{extfunc,erlang,put,2}}.
    {move,{y,13},{x,0}}.
    {jump,{f,10}}.
  {label,9}.
    {try_case,{y,6}}.
    {move,{x,2},{y,13}}.
    {move,{x,1},{y,12}}.
    {init_yregs,{list,[{y,3},{y,4},{y,5},{y,9},{y,10},{y,11}]}}.
    {move,{y,14},{x,0}}.
    {call,1,{f,17}}.
    {move,{x,0},{x,1}}.
    {move,{atom,nested4},{x,0}}.
    {call_ext,2,{extfunc,erlang,put,2}}.
    {bif,raise,{f,0},[{y,13},{y,12}],{x,0}}.
    {'%live',1}.
  {label,10}.
    {try_end,{y,7}}.
    {test_heap,3,1}.
    {put_tuple2,{x,1},{list,[{atom,value},{x,0}]}}.
    {move,{x,1},{x,0}}.
    {jump,{f,12}}.
  {label,11}.
    {try_case,{y,7}}.
    {test_heap,6,3}.
    {put_tuple2,{x,3},{list,[{x,0},{x,1}]}}.
    {put_tuple2,{x,0},{list,[{atom,caught},{x,3}]}}.
    {'%live',1}.
  {label,12}.
    {try_end,{y,8}}.
    {move,{x,0},{y,14}}.
    {move,{atom,finalized},{x,1}}.
    {init_yregs,{list,[{y,12},{y,13}]}}.
    {move,{atom,nested},{x,0}}.
    {call_ext,2,{extfunc,erlang,put,2}}.
    {move,{y,14},{x,0}}.
    {jump,{f,14}}.
  {label,13}.
    {try_case,{y,8}}.
    {move,{x,2},{y,14}}.
    {move,{x,1},{y,13}}.
    {move,{atom,finalized},{x,1}}.
    {init_yregs,{list,[{y,12}]}}.
    {move,{atom,nested},{x,0}}.
    {call_ext,2,{extfunc,erlang,put,2}}.
    {bif,raise,{f,0},[{y,14},{y,13}],{x,0}}.
    {'%live',1}.
  {label,14}.
    {move,{x,0},{y,14}}.
    {init_yregs,{list,[{y,13}]}}.
    {move,{atom,nested3},{x,0}}.
    {call_ext,1,{extfunc,erlang,erase,1}}.
    {move,{x,0},{y,13}}.
    {move,{atom,nested4},{x,0}}.
    {call_ext,1,{extfunc,erlang,erase,1}}.
    {move,{x,0},{y,12}}.
    {move,{atom,nested},{x,0}}.
    {call_ext,1,{extfunc,erlang,erase,1}}.
    {test_heap,5,1}.
    {put_tuple2,{x,1},{list,[{y,14},{y,13},{y,12},{x,0}]}}.
    {move,{x,1},{x,0}}.
    {deallocate,15}.
    return.
  {label,15}.
    {try_case_end,{x,0}}.


{function, foo, 1, 17}.
  {label,16}.
    {func_info,{atom,no_exception_in_catch},{atom,foo},1}.
  {label,17}.
    {move,{atom,ok},{x,0}}.
    return.
